package thread;
/*
* 方案1：继承Thread
*/
public class Test1_Thread {
    public static void main(String[] args) {
        System.out.println("main方法");
        MyThread mt = new MyThread();
        mt.start(); //线程启用
        //简写
        //new MyThread().start();

        //内部类
        InnerThread it = new InnerThread();
        it.start();//启动线程要用start(); -》jvm会自动的调用 线程中的run()
    }
    //因为要在main()这个静态方法中调用 这个内部类，所以这个内部类申明要加static
    //内部类写法：只有这个Test1_thread这个类才会用到InnerThread
    static class InnerThread extends Thread{
        @Override
        public void run(){
            for (int j = 0;j<100 ;j++){
                System.out.println("j = " + j);
                try {
                    Thread.sleep(1000);
                }catch (InterruptedException e){
                    e.printStackTrace();
                }
            }
        }
    }
}

//方案1：外部类 写一个类继承自Thread,重写run()方法，一般加入耗时或阻塞的操作
//MyThread.start()->start0() native本地方法 -》当前线程的run()
class MyThread extends Thread{
    //run()方法中放入要执行的任务（耗时/阻塞的操作）
    @Override
    public void run(){
        for (int i = 0;i<100 ;i++){
            System.out.println("i = " + i);
            try {
                Thread.sleep(1000);
            }catch (InterruptedException e){
                e.printStackTrace();
            }
        }
    }
}
//java继承是单继承，这样写限制了扩展